from django.db import models


# 用户表
class User(models.Model):
    # 用户名 & 密码长度，唯一限定不可重复
    user_name = models.CharField(max_length=30, unique=True)
    pwd = models.CharField(max_length=200)
    phone = models.CharField(max_length=30, unique=True)
    # 用户状态，整型
    status = models.IntegerField()


# 收获地址
class Address(models.Model):
    user = models.ForeignKey('User', on_delete=models.CASCADE)  # 一对多关联，models.CASCADE 级联删除
    user_name = models.CharField(max_length=20)  # 收获地址联系人
    phone = models.CharField(max_length=30, unique=20)  # 收获地址联系电话
    address = models.CharField(max_length=200, null=False)  # 收获地址
    is_default = models.IntegerField()  # 是否为默认收获地址


# 商品表
class Goods(models.Model):
    good_name = models.CharField(max_length=30)  # 商品名称
    img_url = models.ImageField(upload_to='img')  # 商品图片，需上传
    price = models.IntegerField()  # 商品价格
    intro = models.TextField()  # 商品介绍
    type = models.ManyToManyField('Type')  # 商品和商品类型是多对多关系
    unit = models.CharField(max_length=30)  # 商品单位


# 商品分类
class Type(models.Model):
    type_name = models.CharField(max_length=30, unique=True)  # 商品分类名称


# 购物车
class Cart(models.Model):
    num = models.IntegerField()  # 商品数量
    user = models.ForeignKey('User', on_delete=models.CASCADE)  # 一对一关联，models.CASCADE 关联删除
    goods = models.ManyToManyField(Goods)  # 购物车和商品是多对多关联


# 订单表
class Order(models.Model):
    order_no = models.CharField(max_length=30, unique=True)  # 订单号
    status = models.IntegerField()  # 订单状态（已提交，已支付，已收货..）
    time = models.DateTimeField(auto_now_add=True)  # 下单时间，auto_now_add=True 默认写入当前时间
    user_name = models.CharField(max_length=20)  # 收获地址联系人
    phone = models.CharField(max_length=30)  # 收获地址联系电话
    address = models.CharField(max_length=200)  # 收获地址
    user = models.ForeignKey('User', on_delete=models.CASCADE)  # 一对多关联，models.CASCADE 关联删除
    total_price = models.IntegerField()  # 订单总额
    pay_status = models.IntegerField()  # 支付状态：（已支付，未支付）


# 订单详细表
class OrderDetial(models.Model):
    good_name = models.CharField(max_length=30)  # 商品名称
    price = models.IntegerField()  # 商品价格
    num = models.IntegerField()  # 商品数量
    img_url = models.CharField(max_length=100)  # 商品图片
    total_price = models.IntegerField()  # 商品价格
    order = models.ForeignKey('Order', on_delete=models.CASCADE)  # 和订单表一对多的关系
